[[file:https://img.shields.io/badge/license-GPL_3-orange.svg]]
[[http://melpa.org/#/build-farm][file:http://melpa.org/packages/build-farm-badge.svg]]
[[http://stable.melpa.org/#/build-farm][file:http://stable.melpa.org/packages/build-farm-badge.svg]]

* About

=Emacs-Build-Farm= is an Emacs interface for [[https://nixos.org/hydra/][Hydra]] and [[https://git.savannah.gnu.org/cgit/guix/guix-cuirass.git/][Cuirass]] — build
farms for [[https://nixos.org/nix/][Nix]] and [[https://www.gnu.org/software/guix/][Guix]] package managers, i.e., for:

| [[https://hydra.nixos.org]]   | Hydra for Nix    |
| [[https://hydra.gnu.org]]     | Hydra for Guix   |
| [[https://berlin.guixsd.org]] | Cuirass for Guix |

This package allows you to look at builds, jobsets, evaluations and
projects of these build farms.

* Installation

Emacs-Build-Farm can be installed using Guix or from [[https://melpa.org/][MELPA]].

** Guix

Just use:

#+BEGIN_SRC sh
guix package -i emacs-build-farm
#+END_SRC

** MELPA

If you added "melpa" or "melpa-stable" archives to =package-archives= as
it is described on the [[https://melpa.org/#/getting-started][MELPA Getting Started]] page, you can install
"emacs-build-farm" using =M-x package-install= or =M-x list-packages=
commands.

* Usage

The entry point for the available features is =M-x build-farm= command.
It provides a [[https://github.com/magit/magit-popup][magit-popup]] interface to display evaluations, builds,
jobsets and projects.

Alternatively, you can use the following =M-x= commands directly:

- =build-farm-projects=
- =build-farm-project=
- =build-farm-jobsets=
- =build-farm-latest-evaluations=
- =build-farm-latest-builds=
- =build-farm-queued-builds=
- =build-farm-build=

** Keys in "list" buffers

Most of the above commands show "list" buffers (list of builds, etc.).
These lists provide some key bindings, the main of which are:

- =h= (hint): allows you to look at the provided key bindings;
- =RET=: displays "info" buffer for the current entry or several marked
  entries (marked with =m= key).

* Differences between Cuirass and Hydra

In the beginning there was Nix, and Hydra was its build farm.  Then
there appeared Guix which is technically very similar to Nix, except it
is written in Guile.  At first, Guix also used Hydra.  Then Guix decided
to make its own build farm, also written in Guile.  So there appeared
Cuirass.  And Cuirass was very similar to Hydra, but afterwards it
diverged quite a lot.

In particular, Cuirass does not have a notion of "project" anymore.
Hydra has "projects" and "jobsets" inside each project.  But Cuirass
decided that projects are not needed, so it has only "jobsets".
